package com.example.administrator.kotlintutorial.lambda

/**
 * Created by chensuilun on 2019/2/21.
 */
//产物
//
//public final class HigherOrderTestKt {
//    private static final boolean DEBUG = DEBUG;
//
//    public static final boolean getDEBUG() {
//        return DEBUG;
//    }
//
//    public static final void onlyif(boolean isDebug, @NotNull Function0<Unit> block) {
//        if (isDebug) {
//            block.invoke();
//        }
//    }
//
//    public static final void main(@NotNull String[] args) {
//        onlyif(DEBUG, HigherOrderTestKt$main$1.INSTANCE);
//    }
//}

val DEBUG = true

fun onlyif(isDebug: Boolean, block: () -> Unit) {
    if (isDebug) block()
}
//inline 优化后的产物
//
//public static final void inlineOnlyif(boolean isDebug, @NotNull Function0<Unit> block) {
//    Intrinsics.checkParameterIsNotNull(block, "block");
//    if (isDebug) {
//        block.invoke();
//    }
//}
//
//public static final void main(@NotNull String[] args) {
//    if (DEBUG) {
//        System.out.println("\u6253\u5370\u65e5\u5fd7inline ");
//    }
//}
inline fun inlineOnlyif(isDebug: Boolean, block: () -> Unit) {
    if (isDebug) block()
}

fun main(args: Array<String>) {
    onlyif(DEBUG) {
        println("打印日志")
    }

    inlineOnlyif(DEBUG) {
        println("打印日志inline ")
    }
}